﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TopologyWizzard
{
    [Serializable]

    //! Klasa reprezentująca test
     public class TestCase
    {
        private string name;
        private string obiekt;
        private string getType;
        private string oid;
        private string description;

        private Router parentRouter;

        private List<KeyValuePair<string, string>> log;
        
        private bool result = false;
        private bool correct = true;
        private Dictionary<int, string> expectedAttr;
        private List<bool> resultAttr;
       
        //! Konstruktor
        public TestCase(Router par)
        {
            parentRouter = par;
            log = new List<KeyValuePair<string, string>>();
            expectedAttr = new Dictionary<int, string>();
            resultAttr = new List<bool>();
        }

        //! Lista wyników testu
        public List<bool> ResultAttr
        {
            get { return resultAttr; }
            set { resultAttr = value; }
        }

        //! Nazwa
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        //! Obiekt
        public string Obiekt
        {
            get { return obiekt; }
            set { obiekt = value; }
        }
        
        //! Typ operacji
        public string GetType
        {
            get { return getType; }
            set { getType = value; }
        }

        //! Identyfikator obiektu
        public string Oid
        {
            get { return oid; }
            set { oid = value; }
        }

        //! Opis słowny
        public string Description
        {
            get { return description; }
            set { description = value; }
        }

        //! Lista błędów i ostrzeżeń
        public List<KeyValuePair<string, string>> Log 
        { 
            get { return log; } 
        }

        //! Określa czy test przebiegł prawidłowo
        public bool Correct
        {
            get { return correct; }
            set { correct = value; }
        }

        //! Określa wynik testu
        public bool Result
        {
            get { return result; }
            set { result = value; }
        }

        //! Określa, do którego routera należy test
        public Router ParentRouter
        {
            get { return parentRouter; }
            set { parentRouter = value; }
        }

        //! Dodanie oczekiwanego rezultatu testu
        public void addToExpectedAttrDictionary(int attr, string exp)
        {
            expectedAttr.Add(attr, exp);
        }

        //! Określa oczekiwanye rezultaty testu
        public Dictionary<int, string> getExpectedAttr()
        {           
            return expectedAttr;
        }


    }
}
